/*
 * @(#)SystemConfig.java
 *
 * Copyright 2006 by Beijing Run, All rights reserved.
 */

package com.bis.framework.util.common;

import java.io.InputStream;
import java.util.Properties;

/**
 * 系统配置, 从配置文件sys-config.xml获取, 支持中文配置.
 *
 * @author 聂军
 * @version 1.0, 2006-5-19
 */

public final class SystemConfig
{

    private static SystemConfig sysConfig  = null;

    private Properties          properties = null;

    /**
     * 构造器.
     *
     * @param is 文件输入流.
     * @throws Exception
     */
    public SystemConfig(InputStream is, boolean xml) throws Exception
    {
        properties = new Properties();
        if (xml)
        {
            properties.loadFromXML(is);
        }
        else
        {
            properties.load(is);
        }
    }

    /**
     * 加载系统配置.
     */
    public static void onload(InputStream is, boolean xml) throws Exception
    {
        if (sysConfig == null)
        {
            sysConfig = new SystemConfig(is, xml);
        }
    }

    /**
     * 清除系统配置.
     */
    public static void unload()
    {
        if (sysConfig.properties != null)
        {
            sysConfig.properties.clear();
        }
        sysConfig = null;
    }

    /**
     * @param key - 资源唯一标志符.
     * @return - key所代表的资源.
     */
    public static String getValue(String key)
    {
        try
        {
            return sysConfig.properties.getProperty(key);
        }
        catch (Exception ex)
        {
        }
        return null;
    }

    /**
     * 得到key所代表的资源,如果没有则返回defaultValue.
     *
     * @param key - 资源唯一标志符.
     * @param defaultValue - 默认的返回值.
     * @return - key所代表的资源.
     */
    public static String getValue(String key, String defaultValue)
    {
        try
        {
            return sysConfig.properties.getProperty(key, defaultValue);
        }
        catch (Exception ex)
        {
            return defaultValue;
        }
    }

    /**
     * 得到key所代表的资源,如果没有则返回defaultValue.
     *
     * @param key - 资源唯一标志符.
     * @param defaultValue - 默认的返回值.
     * @return - key所代表的资源.
     */
    public static int getInt(String key, int defaultValue)
    {
        try
        {
            return Integer.parseInt(sysConfig.properties.getProperty(key));
        }
        catch (Exception ex)
        {
            return defaultValue;
        }
    }

    /**
     * 得到key所代表的资源,如果没有则返回defaultValue.
     *
     * @param key - 资源唯一标志符.
     * @param defaultValue - 默认的返回值.
     * @return - key所代表的资源.
     */
    public static boolean getBoolean(String key, boolean defaultValue)
    {
        try
        {
            return Boolean.parseBoolean(sysConfig.properties.getProperty(key));
        }
        catch (Exception ex)
        {
            return defaultValue;
        }
    }
    
    /**
     * 取得静态文件路径。
     * @Description:
     * @return
     */
   public static String getRes()
   {
       try
       {
           return sysConfig.properties.getProperty(COConstants.STATIC_FILE_PATH);
       }
       catch (Exception ex)
       {
       }
       return null;
   }
   
   /**
    * 取得相对URL路径。
    * @Description:
    * @return
    */
  public static String getUrl()
  {
      try
      {
          return sysConfig.properties.getProperty(COConstants.STATIC_FILE_PATH);
      }
      catch (Exception ex)
      {
      }
      return null;
  }
   
  /**
   * 取得验证码框架路径。
   * @Description:
   * @return
   */
 public static String getCheckCodeUrl()
 {
     try
     {
         return sysConfig.properties.getProperty(COConstants.STATIC_FILE_PATH);
     }
     catch (Exception ex)
     {
     }
     return null;
 }
}
